﻿using Microsoft.Practices.Composite.Presentation.Events;
using System.Windows.Threading;
using System.Threading;
using System.Windows;

namespace MefBasic.Commans
{
    public class BaseEvent<T> : CompositePresentationEvent<T>
    {
        public virtual void PublishWithDispatcher(T payload)
        {
            if(Application.Current!=null && Application.Current.Dispatcher!=null)
                Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Background, new ParameterizedThreadStart(DoPublish), payload);
            else
            {
                base.Publish(payload);
            }
        }
        private void DoPublish(object param)
        {
            base.Publish((T)param);
        }
    }
}
